package com.saep.vista;

import com.saep.logica.LogicaEmpresaLocal;
import com.saep.modelo.Empresa;
import com.sun.xml.fastinfoset.EncodingConstants;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author Oswal
 */
@ManagedBean(name = "empresaVista")
@RequestScoped
public class empresaVista {

    @EJB
    LogicaEmpresaLocal empresaLogica;

    private InputText txtNumeroEmpresa;
    private InputText txtNombreEmpresa;
    private InputText txtDireccionEmpresa;
    private InputText txtTelefonoEmpresa;
    private CommandButton btnRegistrarEmpresa;
    private CommandButton btnModificarEmpresa;
    private CommandButton btnEliminarEmpresa;
    private CommandButton btnLimpiarEmpresa;
    private Empresa selectedEmpresas;
    private List<Empresa> listaEmpresas;

    public empresaVista() {
    }

    public LogicaEmpresaLocal getEmpresaLogica() {
        return empresaLogica;
    }

    public void setEmpresaLogica(LogicaEmpresaLocal empresaLogica) {
        this.empresaLogica = empresaLogica;
    }

    public InputText getTxtNumeroEmpresa() {
        return txtNumeroEmpresa;
    }

    public void setTxtNumeroEmpresa(InputText txtNumeroEmpresa) {
        this.txtNumeroEmpresa = txtNumeroEmpresa;
    }

    public InputText getTxtNombreEmpresa() {
        return txtNombreEmpresa;
    }

    public void setTxtNombreEmpresa(InputText txtNombreEmpresa) {
        this.txtNombreEmpresa = txtNombreEmpresa;
    }

    public InputText getTxtDireccionEmpresa() {
        return txtDireccionEmpresa;
    }

    public void setTxtDireccionEmpresa(InputText txtDireccionEmpresa) {
        this.txtDireccionEmpresa = txtDireccionEmpresa;
    }

    public InputText getTxtTelefonoEmpresa() {
        return txtTelefonoEmpresa;
    }

    public void setTxtTelefonoEmpresa(InputText txtTelefonoEmpresa) {
        this.txtTelefonoEmpresa = txtTelefonoEmpresa;
    }

    public CommandButton getBtnRegistrarEmpresa() {
        return btnRegistrarEmpresa;
    }

    public void setBtnRegistrarEmpresa(CommandButton btnRegistrarEmpresa) {
        this.btnRegistrarEmpresa = btnRegistrarEmpresa;
    }

    public CommandButton getBtnModificarEmpresa() {
        return btnModificarEmpresa;
    }

    public void setBtnModificarEmpresa(CommandButton btnModificarEmpresa) {
        this.btnModificarEmpresa = btnModificarEmpresa;
    }

    public CommandButton getBtnEliminarEmpresa() {
        return btnEliminarEmpresa;
    }

    public void setBtnEliminarEmpresa(CommandButton btnEliminarEmpresa) {
        this.btnEliminarEmpresa = btnEliminarEmpresa;
    }

    public CommandButton getBtnLimpiarEmpresa() {
        return btnLimpiarEmpresa;
    }

    public void setBtnLimpiarEmpresa(CommandButton btnLimpiarEmpresa) {
        this.btnLimpiarEmpresa = btnLimpiarEmpresa;
    }

    public Empresa getSelectedEmpresas() {
        return selectedEmpresas;
    }

    public void setSelectedEmpresas(Empresa selectedEmpresas) {
        this.selectedEmpresas = selectedEmpresas;
    }

    public List<Empresa> getListaEmpresas() {
        if (listaEmpresas == null) {
            try {
                listaEmpresas = empresaLogica.consultarEmpresas();
            } catch (Exception ex) {
                Logger.getLogger(empresaVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return listaEmpresas;
    }

    public void setListaEmpresas(List<Empresa> listaEmpresas) {
        this.listaEmpresas = listaEmpresas;
    }

    public void funcion_limpiar() {
        txtNumeroEmpresa.setValue("");
        txtNombreEmpresa.setValue("");
        txtDireccionEmpresa.setValue("");
        txtTelefonoEmpresa.setValue("");
        btnRegistrarEmpresa.setDisabled(false);
        btnModificarEmpresa.setDisabled(true);
        btnEliminarEmpresa.setDisabled(true);
        txtNumeroEmpresa.setDisabled(false);

    }

    public void funcion_registrar() {
        try {
            Empresa e = new Empresa();
            e.setNumeroempresa(Long.parseLong(txtNumeroEmpresa.getValue().toString()));
            e.setNombreempresa(txtNombreEmpresa.getValue().toString());
            e.setDireccionempresa(txtDireccionEmpresa.getValue().toString());
            e.setTelefonoempresa(txtTelefonoEmpresa.getValue().toString());
            empresaLogica.registrar(e);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Información", "La empresa se registró con éxito"));
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", ex.getMessage()));
            Logger.getLogger(empresaVista.class.getName()).log(Level.SEVERE, null, ex);
        }
        listaEmpresas = null;
        funcion_limpiar();
        btnModificarEmpresa.setDisabled(false);
        btnEliminarEmpresa.setDisabled(false);
    }

    public void funcion_seleccionar(SelectEvent event) {
        Empresa empresaSeleccionada = (Empresa) event.getObject();
        txtNumeroEmpresa.setValue(empresaSeleccionada.getNumeroempresa());
        txtNombreEmpresa.setValue(empresaSeleccionada.getNombreempresa());
        txtDireccionEmpresa.setValue(empresaSeleccionada.getDireccionempresa());
        txtTelefonoEmpresa.setValue(empresaSeleccionada.getTelefonoempresa());
        txtNumeroEmpresa.setDisabled(true);
        btnRegistrarEmpresa.setDisabled(true);
        btnModificarEmpresa.setDisabled(false);
        btnEliminarEmpresa.setDisabled(false);

    }

    public void funcion_modificar() {
        try {
            Empresa e = new Empresa();
            e.setNumeroempresa(Long.parseLong(txtNumeroEmpresa.getValue().toString()));
            e.setNombreempresa(txtNombreEmpresa.getValue().toString());
            e.setDireccionempresa(txtDireccionEmpresa.getValue().toString());
            e.setTelefonoempresa(txtTelefonoEmpresa.getValue().toString());
            empresaLogica.modificar(e);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Información", "La empresa se modificó con éxito"));
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", ex.getMessage()));
            Logger.getLogger(empresaVista.class.getName()).log(Level.SEVERE, null, ex);
        }
        listaEmpresas = null;
        txtNumeroEmpresa.setDisabled(false);
        funcion_limpiar();

    }

    public void funcion_eliminar() {
        try {
            Empresa e = new Empresa();
            e.setNumeroempresa(Long.parseLong(txtNumeroEmpresa.getValue().toString()));
            empresaLogica.eliminar(e);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Información", "La empresa se eliminó con éxito"));
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", ex.getMessage()));
            Logger.getLogger(empresaVista.class.getName()).log(Level.SEVERE, null, ex);
        }
        listaEmpresas = null;
        funcion_limpiar();
    }

}
